/**
 * Created by PanJiaChen on 16/11/18.
 */

import {
    numberFormatter
} from '@/filters'

/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
    return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUsername(str) {
    const valid_map = ['admin', 'editor']
    return valid_map.indexOf(str.trim()) >= 0
}

/**
 * @param {string} url
 * @returns {Boolean}
 */
export function validURL(url) {
    const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
    return reg.test(url)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validLowerCase(str) {
    const reg = /^[a-z]+$/
    return reg.test(str)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUpperCase(str) {
    const reg = /^[A-Z]+$/
    return reg.test(str)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validAlphabets(str) {
    const reg = /^[A-Za-z]+$/
    return reg.test(str)
}

/**
 * @param {string} email
 * @returns {Boolean}
 */
export function validEmail(email) {
    const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
    return reg.test(email)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function isString(str) {
    if (typeof str === 'string' || str instanceof String) {
        return true
    }
    return false
}

/**
 * @param {Array} arg
 * @returns {Boolean}
 */
export function isArray(arg) {
    if (typeof Array.isArray === 'undefined') {
        return Object.prototype.toString.call(arg) === '[object Array]'
    }
    return Array.isArray(arg)
}
export const radioValidator = [{
  required: true,
  message: '请选择此项',
  trigger: 'blur'
}]
export const inputValidator = [{
    required: true,
    message: '请填写此项',
    trigger: 'blur'
}]
export const nineValidator = [{
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        min: 9,
        max: 9,
        message: '长度位9位',
        trigger: 'blur'
    }
]
export const priceValidator = [{
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
        message: '请输入正确的金额',
        trigger: 'blur'
    }
]

export const numberValidator = [{
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /^[1-9]+[0-9]*$/,
        message: '请输入正整数',
        trigger: 'blur'
    }
]

export const nonNumberValidator = [{
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /^\d+$/,
        message: '请输入非负整数',
        trigger: 'blur'
    }
]

export const nonNumber0Validator = [{
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /^\d+(\.\d+)?$/,
        message: '请输入非负数',
        trigger: 'blur'
    }
]
export const selectValidator = [{
    required: true,
    message: '请选择此项',
    trigger: 'change'
}]

export const selectValidator1 = [{
    required: true,
    message: '请选择此项',
    trigger: 'blur'
}]

export const everyNumberValidator = [{
        required: false,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /^-?[1-9]\d*$/,
        message: '请输入整数',
        trigger: 'blur'
    },
    {
        max: 10,
        message: '最大10位',
        trigger: 'blur'
    }
]

export const phoneValid = [
  {
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /^1[3456789]\d{9}$/,
        message: '请输入正确电话号码',
        trigger: 'blur'
    },
]
//身份证号
export const IDValid = [{
        required: true,
        message: '请填写此项',
        trigger: 'blur'
    },
    {
        pattern: /^(\d{18,18}|\d{15,15}|\d{17,17}X)$/,
        message: '请输入正确身份证号',
        trigger: 'blur'
    },
]

//姓名
export const userNameValidator = [{
    required: true,
    message: '请填写此项',
    trigger: 'blur'
},
{
    pattern: /^[\u4e00-\u9fa5]{2,10}$/,
    message: '请输入2-10位汉字',
    trigger: 'blur'
},
]
